home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok58 / audiosupport1.1 / audiosupport.dok < prev    next >
Text File  |  1993-11-04  |  5KB  |  142 lines

  1. __________________________________________________________________________
  2.                                                                           
  3.                 Dokumentation zum Modul "AudioSupport V1.1"               
  4.                      von Christian Stiens, 24-Jul-91                      
  5.                                                                           
  6. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  7.  
  8.  
  9. 1. Umfang des Pakets
  10.  
  11.   · AudioSupport.dok       - Diese Dokumentation
  12.   · AudioSupport.mod       - Der Quelltext des Moduls in Oberon
  13.   · AudioSupport.sym       - Die Symboldatei von Oberon V2.01 erzeugt
  14.   · AudioSupport.obj       - Die Objektdatei
  15.   · AudioSupport.objs      - Die Objektdatei mit Option -d compiliert
  16.   · AudioDemo              - Kleine Demo, das Shepard-Töne ausgibt
  17.   · AudioDemo.mod          - Sein Quelltext
  18.  
  19.  
  20. 2. Copyright
  21.  
  22.   Das gesamte Paket ist Public-Domain. Jede nicht-kommerzielle Nutzung
  23.   ist erlaubt. Möchten Sie das Modul für ein kommerzielles Projekt
  24.   benutzen, so müssen Sie sich mit mir in Verbindung setzen, um eine
  25.   eventuelle Gewinnbeteiligung auszuhandeln.
  26.  
  27.  
  28. 3. Einleitung
  29.  
  30.   Dieses Modul soll die Programmierung des Audio-Devices vereinfachen.
  31.   Wer bisher die Hardware-Register für die Erzeugung von Sounds be-
  32.   nutzt hat, weil er sich nicht mit dem Audio-Device herumschlagen
  33.   wollte, für den ist dieses Modul genau das richtige.
  34.  
  35.  
  36. 4. Beschreibung der Prozeduren
  37.  
  38. PROCEDURE SetPriority(pri: SHORTINT);
  39.  
  40.     Normalerweise erhalten die Audio-Kanäle beim Öffen mit OpenChannel
  41.     die Priorität 0. Mit der Prozedur SetPriority können Sie eine
  42.     beliebige Priorität (-128 bis +127) festlegen mit der die Kanäle
  43.     von nun an geöffnet werden.
  44.  
  45. PROCEDURE DontAbort;
  46.  
  47.     Normalerweise wird das Programm abgebrochen, falls ein Kanal nicht
  48.     geöffnet werden konnte oder versucht wird einen nicht geöffneten
  49.     Kanal zu benutzen. Ein Aufruf der Prozedur DontAbort bewirkt,
  50.     daß kein Abruch mehr erfolgt. Das Programm kann ohne Tonausgabe
  51.     weiterlaufen.
  52.  
  53. PROCEDURE OpenChannel(mask: SET): SHORTINT;
  54.  
  55.     Diese Prozedur öffnet einen AudioKanal. Man übergibt ihr
  56.     eine Menge von Kanälen, von der sich das Audio-Device einen
  57.     aussucht. Wenn man z.B. einen rechten Kanal haben will, setzt
  58.     man mask = {as.right0,as.right1}. Wenn man irgend einen Kanal haben
  59.     möchte, setzt man {0..3} für mask ein (oder einfach {}).
  60.     Als Rückgabe erhält man den Kanal, der tatsächlich geöffnet
  61.     wurde.
  62.     Falls alle angegebenen Kanäle besetzt sind, wird das Programm
  63.     mit dem Requester "Can't open audio-channel" abgebrochen, es
  64.     sei denn, man hat vorher DontAbort aufgerufen. In diesem Fall liefert
  65.     OpenChannel -1.
  66.  
  67. PROCEDURE CloseChannel(chan: SHORTINT);
  68.  
  69.     Hiermit wird der angegebene Kanal wieder geschlossen.
  70.     Alle geöffneten Kanäle werden bei Programmende automatisch
  71.     wieder geschlossen. Das Schließen eines nicht geöffneten Kanal
  72.     ist erlaubt.
  73.  
  74. PROCEDURE PlaySound(chan: SHORTINT; sound: e.ADDRESS; size: LONGINT;
  75.                     per, vol, cyc: INTEGER);
  76.  
  77.     Diese Routine spielt einen Sound, der im Chip-Memory abgelegt
  78.     ist über den angegebenen Kanal. size ist die Länge des Samples
  79.     in Bytes. Der per-Wert errechnet sich nach folgender Formel aus
  80.     der gewünschten Sampling-Frequenz:
  81.  
  82.                      per = clock / freq
  83.  
  84.     Die Konstante clock bezeichnet die halbe Taktfrequenz des
  85.     Amiga und kann aus dem Modul importiert werden.
  86.     Wenn man z.B. eine 16 Bytes lange Sinustabelle mit der Frequenz
  87.     1000 Hz spielen möchte beträgt der period-Wert:
  88.  
  89.                   per = clock / (16*1000) = 223
  90.  
  91.     Der period-Wert muß größer gleich 124 sein, denn sonst kommt
  92.     die Hardware nicht mehr mit und es zu Störgeräuschen.
  93.     cyc bestimmt, wie oft der Sample wiederholt werden soll. Falls
  94.     cyc gleich 0 ist, wird der Sample andauernd wiederholt.
  95.  
  96. PROCEDURE PlayLoopSound(chan: SHORTINT; sound: e.ADDRESS;
  97.                         oneShot, repeat: LONGINT;
  98.                         per, vol: INTEGER);
  99.  
  100.     Mit dieser Prozedur kann man einen "geloopten" Sound spielen.
  101.     oneShot gibt dabei die Länge der "Einschwingphase" und repeat
  102.     die Länge des geloopten Teils an:
  103.  
  104.              ----oneShot----+-------repeat-------+
  105.                             |                    |
  106.                             ^                    v
  107.                             |                    |
  108.                             +---------<----------+
  109.  
  110. PROCEDURE StopSound(chan: SHORTINT);
  111.  
  112.     Hiermit kann der Sound der von dem angegebenen Kanal
  113.     gespielt wird abgebrochen werden.
  114.  
  115. PROCEDURE ModifySound(chan: SHORTINT; per, vol: INTEGER);
  116.  
  117.     Diese Prozedur ermöglicht die nachträgliche Änderung der
  118.     Frequenz und Lautstärke des laufenden Sounds.
  119.  
  120. PROCEDURE CheckSound(chan: SHORTINT): BOOLEAN;
  121.  
  122.     CheckSound ermittelt, ob zur Zeit ein Ton auf dem angegebenen
  123.     Kanal gespielt wird. Falls dies der Fall ist wird TRUE zurück-
  124.     gegeben, sonst FALSE.
  125.  
  126. PROCEDURE WaitSound(chan: SHORTINT);
  127.  
  128.     Diese Prozedur wartet solange, bis der Sound auf dem angegebenen
  129.     Kanal abgelaufen ist.
  130.  
  131. PROCEDURE Filter(on: BOOLEAN);
  132.  
  133.     Hiermit kann der LowPass-Filter des Amiga aus (on = FALSE)
  134.     und wieder eingeschaltet (on = TRUE) werden.
  135.     Bei einigen älteren Amigas läßt sich der Audio-Filter nicht
  136.     softwaremäßig abschalten.
  137.  
  138.  
  139. Viel Spaß !!!
  140.  
  141. --- Chris
  142.